software automation best practices